
// <copyright file="IComponentController.cs" company="Subhadra Software Solutions">
//   
// </copyright>
// <summary>
//   The ComponentController interface.
// </summary>

namespace SubhadraSolutions.Sharp.Utils.Contracts
{
    /// <summary>
    /// The ComponentController interface.
    /// </summary>
    public interface IComponentController
    {
        #region Public Properties

        /// <summary>
        /// Gets the state.
        /// </summary>
        ControllableComponentState State { get; }

        /// <summary>
        /// Gets a value indicating whether supports pause and resume.
        /// </summary>
        bool SupportsPauseAndResume { get; }

        #endregion Public Properties

        #region Public Methods and Operators

        /// <summary>
        /// The pause.
        /// </summary>
        void Pause();

        /// <summary>
        /// The resume.
        /// </summary>
        void Resume();

        /// <summary>
        /// The start.
        /// </summary>
        void Start();

        /// <summary>
        /// The stop.
        /// </summary>
        void Stop();

        #endregion Public Methods and Operators
    }
}